<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<h1>队列 先进先出</h1>
<h2>表头出去，表尾进</h2>
<h3>换成一个对象结构</h3>
<script>
  /*
  * Queue 队列
  * */
  class Queue{
    items = {}
    lowCount = 0 ;// 对头的索引
    count = 0; // 加了多少值

    dequeue(){ // 出队 从队列头部
      if(this.isEmpty()){ // 先判断是不是空
        return
      }
      // 先保存再删除
      let res = this.items[this.lowCount]
      delete this.items[this.lowCount]
      this.lowCount++
      return res
    }
    enquene(data){ // 进队 从表尾
      this.items[this.count] = data
      this.count ++
    }
    peek(){ // 返回对头
      return this.items[this.lowCount]
    }
    isEmpty(){ // 判断是不是空
      return this.size() === 0
    }
    size(){
      return this.count - this.lowCount
    }
    clear(){ // 清空队列
      this.items = {}
    }
    toString(){ // 转成字符串展示出来
      let str = ''
      for(let i=0;i<this.size();i++){
        str += this.items[this.lowCount+i]
      }
      return str
    }
  }
  let obj = new Queue()
  obj.enquene(100)
  obj.enquene(200)
  obj.enquene(300)
  console.log(obj)
</script>
</body>
</html>
